package com.ruicar.afs.cloud.risk.api.dto.tortoise;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.ruicar.afs.cloud.common.core.enums.AfsEnumDeserializer;
import com.ruicar.afs.cloud.common.core.enums.AfsEnumSerializer;
import com.ruicar.afs.cloud.risk.api.enums.tortoise.GwtTortoiseAntiFraudCallStep;
import com.ruicar.afs.cloud.risk.api.enums.tortoise.GwtTortoiseScene;
import com.ruicar.afs.cloud.risk.api.enums.tortoise.GwtTortoiseStartApproveType;
import lombok.Data;

import java.io.Serializable;

/**
 * @Description
 * @Author Peng Jinbo
 * @Date 2020/07/30 21:06
 */
@Data
public class TortoiseQueryBean implements Serializable {

    /**
     * Server name
     */
    private String serverName;

    /**
     * Main id
     * 必传
     */
    private String mainId;

    /**
     * Scene
     * 必传
     */
    @JSONField(serializeUsing = AfsEnumSerializer.class, deserializeUsing = AfsEnumDeserializer.class)
    @JsonSerialize(using = AfsEnumSerializer.class)
    @JsonDeserialize(using = AfsEnumDeserializer.class)
    private GwtTortoiseScene scene;

    /**
     * Call step
     * 反欺诈调用步
     * 申请提交，可以为空。
     * 二手车预授信，可以为空。
     * 欺诈信息上送：
     * 调用阶段为【案件初审疑似欺诈】，传值22；
     * 调用阶段为【放款申请】，传值40；
     * 调用阶段为【客服疑似欺诈】，传值41。
     * 反欺诈手动调用：
     * 调用阶段为【案件初审手工核查】，传值21；
     * 调用阶段为【案件终审前】，传值30；
     * 调用阶段为【案件审批结束】，传值39；
     * 调用阶段为【放款申请】，传值40；
     * 调用阶段为【放款审批结束】，传值59。
     * 决策引擎手动调用，传空
     *
     */
    @JSONField(serializeUsing = AfsEnumSerializer.class, deserializeUsing = AfsEnumDeserializer.class)
    @JsonSerialize(using = AfsEnumSerializer.class)
    @JsonDeserialize(using = AfsEnumDeserializer.class)
    private GwtTortoiseAntiFraudCallStep callStep;

    /**
     * Serial number
     * 流水号
     */
    private String serialNumber;
    /**
     * Apply no
     * 申请编号
     */
    private String applyNo;

    /**
     * Approve type
     * 流程类型标识，目前主要用来区分复议
     */
    @JSONField(serializeUsing = AfsEnumSerializer.class, deserializeUsing = AfsEnumDeserializer.class)
    @JsonSerialize(using = AfsEnumSerializer.class)
    @JsonDeserialize(using = AfsEnumDeserializer.class)
    private GwtTortoiseStartApproveType approveType;
}
